/*mypipe.c*/
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>

void main() {
    int pid;
    int mypipe[2];

    // 创建管道
    pipe(mypipe);

    // 创建子进程
    pid = fork();

    if (pid < 0) {
        perror("create process failed\n");
        exit(0);
    }

    if (pid == 0) { // 子进程
        close(mypipe[1]); // 关闭写端
        dup2(mypipe[0], 0); // 将管道读端重定向到标准输入
        close(mypipe[0]);
        sleep(1);
        execlp("grep", "grep", "init", NULL);
    } else { // 父进程
        close(mypipe[0]); // 关闭读端
        dup2(mypipe[1], 1); // 将管道写端重定向到标准输出
        close(mypipe[1]);
        execlp("ps", "ps", "aux", NULL);
    }
}
